#include <iostream>
#include <cstdio>
#include <string>
#include <algorithm>
#include <queue>
using namespace std;

string ss[100010],*sp[100010];
bool done[100010];
bool cmp(string *a,string *b)
{
    return *a<*b;
}
int main()
{
    int n;
    cin>>n;
    string c;
    char ch;
    for(int i=0;i<100010;i++) sp[i]=ss+i;
    for(int i=0;i<n;i++)
    {
        cin>>ss[i*2];
    }
    cin>>c;
    ch=c[0];
    for(int i=0;i<n;i++)
    {
        ss[i*2+1]=ss[i*2]+c;
    }
    sort(sp,sp+2*n,cmp);
    int state=0;
    queue<int> q0,q1;
    int cnt=0;
    for(int i=0;i<n*2;i++)
    {
        string &st=*sp[i];
        int pos=sp[i]-ss;
       // cout<<pos<<" "<<st<<endl;
        if(pos%2==1)
        {
            q0.push(pos);
            if(cnt<n/2)
            {
                done[pos^1]=true;
                cnt++;
            }
        }
        else q1.push(pos);
    }
    for(int i=0;i<n;i+=2)
    {
        int pos=q0.front();
        q0.pop();
        cout<<ss[pos];
        while(1)
        {
            pos=q1.front();
            q1.pop();
            if(!done[pos])
            {
                cout<<ss[pos]<<endl;
                break;
            }
        }
    }
    return 0;
}
